using System;
using System.Collections.Generic;
using System.Text;

namespace SharpMud.Server.Systems.Scripting.Runtime
{
    /// <summary>
    /// The IScript interface is used to designate a class as a script, and used
    /// to provide a dynamic invocation modality. It is not required for a script
    /// to implement IScript if it provides a method tagged with the StrongScriptMethodAttribute.
    /// </summary>
    /// <remarks>
    /// If a script provides a StrongScriptMethod, but does not implement IScript, then
    /// the compiled script's execution handler will defer dynamic invocation attempts to
    /// the StrongScriptMethod.
    /// </remarks>
    public interface IScript
    {
        /// <summary>
        /// Dynamically execute the script using a set of contextual parameters.
        /// </summary>
        /// <param name="context">The context set to execute the script with.</param>
        void Execute(ScriptExecutionContext context);
    }
}
